<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>作业4</title>
    <script>
        /*
        4. 求一个三位数，叫做“喇叭花数”，
        该三位数等与其每位数字的阶乘之和。输出100~999的所有喇叭花数。
        */

        /*
        函数功能：获取某个数的阶乘
        输入：一个整数
        输出：输入数字的阶乘
        */
        function getFactorial(num){
            var mul = 1;
            for(var i=1; i<=num; i++){
                mul *= i;
            }
            console.log("------");
            console.log("num:"+num);
            console.log("mul:"+mul);
            return mul;
        }

        /*
        函数功能：判断一个数字是否为喇叭花数
        输入：一个三位整数
        输出：如果输入的数字是喇叭花数，输出true；否则输出false。
        */
        function isMorningGloryNumber(num) {
            var numBai = parseInt(num/100);
            var numShi = parseInt(num/10)%10;
            var numGe = num%10;

            var sum = getFactorial(numBai)+getFactorial(numShi)+getFactorial(numGe);

            if(sum == num){
                return true;
            }else{
                return false;
            }
        }

        /*
        函数功能：获取一个范围内的所有喇叭花数
        输入：两个整数（就是一个范围）  minNum<maxNum
        输出：该范围内的所有喇叭花数的一个数组。
        */
        function getMorningGloryNumbers(minNum, maxNum) {
            var arrMorningGloryNumbers = [];
            for(var i=minNum; i<=maxNum; i++){
                if(isMorningGloryNumber(i)){
                    arrMorningGloryNumbers.push(i);
                }
            }
            return arrMorningGloryNumbers;
        }

        var arrMorningGloryNumbers = getMorningGloryNumbers(100, 999);

        console.log("100-999之间共"+arrMorningGloryNumbers.length+"个喇叭花数，所有的喇叭花数如下:");
        for(var i=0; i<arrMorningGloryNumbers.length; i++){
            console.log(arrMorningGloryNumbers[i]);
        }
    </script>
</head>
<body>
    
</body>
</html>